#include <stdio.h>
#include <stdlib.h>
#include "modifier_pat.h"
#include "menu_modifier_pat.h"
#include <string.h>
#include "Patient.h"


void modifier_ID_pat( char fichier[],char tmp3[])
{
	char tmp[]="tmp.txt";
	int res,res1,res2,res3,l;
	FILE *f ;
	FILE *t ;
	FILE *y;
	patient p;
	int ID;
	printf("\n Donner l'ID du patient que vous voulez modifier:\n");
	scanf("%d", &ID);
	f=fopen(fichier,"rb") ;
	t=fopen(tmp,"wb") ;
	if (f!= NULL && t!=NULL)
		{
			while(fread(&p,sizeof(patient),1,f)!=0)
				{
					if( ID!=p.ID)
						{fwrite(&p,sizeof(patient),1,t) ;}
					if (ID==p.ID)
					     {do {
						res=0;
						res1=0;
						res2=0;
						res3=0;
						printf("Lancien Id est: %d \n",p.ID);
						printf("Saisir nouveau identifiant ID \n");
						scanf("%d",&p.ID);
						l=longueur_pat(p.ID);
						y=fopen("tmp3.txt","ab");
						if (y!=NULL){
  						while(fread(&p,sizeof(patient),1,y)!=0 && res1==0)
							{
								if(p.ID==p.ID)
								{res1=1;}
 							}
						}
						f=fopen(fichier,"rb");
  						if (f!=NULL){
  						while(fread(&p,sizeof(patient),1,f)!=0 && res==0)
							{
								if(p.ID==p.ID)
									{res=1;}
 							}
						}
						if((res==1)||(res1==1)){
						printf("ID deja existe\n");
						res2=1;}
 
						if((p.ID<0) || (l!=5)){
						res3=1;
						printf("ID incorrect\n");}
						  }
						while (res3==1 || res2==1);
						fwrite(&p,sizeof(patient),1,t) ;}
				}
	printf("L'ID du patient a été modifié\n");}
	fclose(f) ;
	fclose(t) ;
	f=fopen(fichier,"wb") ;
	t=fopen(tmp,"rb") ;
	while(fread (&p,sizeof(patient),1,t)!=0)
		{fwrite(&p,sizeof(patient),1,f) ;}
	fclose(f) ;
	fclose(t) ;
}


void modifier_nom_pat( char fichier[])
{
char tmp[]="tmp.txt";
	FILE *f ;
	FILE *t ;
	patient p;
	int ID;
	printf("\n Donner l'ID du patient que vous voulez modifier:\n");
	scanf("%d", &ID);
	f=fopen(fichier,"rb") ;
	t=fopen(tmp,"wb") ;
	if (f!= NULL && t!=NULL)
		{
			while(fread(&p,sizeof(patient),1,f)!=0)
				{
					if( ID!=p.ID)
						{fwrite(&p,sizeof(patient),1,t) ;}
					if (ID==p.ID)
					        {
						printf("Lancien nom est: %s \n",p.nom);
						printf("Saisir le nouveau Nom \n");fflush(stdin);
						scanf("%s",p.nom);
						fwrite(&p,sizeof(patient),1,t) ;}
				}
	printf("Le nom du patient a été modifié\n");}
	fclose(f) ;
	fclose(t) ;
	f=fopen(fichier,"wb") ;
	t=fopen(tmp,"rb") ;
	while(fread (&p,sizeof(patient),1,t)!=0)
		{fwrite(&p,sizeof(patient),1,f) ;}
	fclose(f) ;
	fclose(t) ;
}

void modifier_prenom_pat( char fichier[])
{
char tmp[]="tmp.txt";
	FILE *f ;
	FILE *t ;
	patient p;
	int ID;
	printf("\n Donner l'ID du patient que vous voulez modifier:\n");
	scanf("%d", &ID);
	f=fopen(fichier,"rb") ;
	t=fopen(tmp,"wb") ;
	if (f!= NULL && t!=NULL)
		{
			while(fread(&p,sizeof(patient),1,f)!=0)
				{
					if( ID!=p.ID)
						{fwrite(&p,sizeof(patient),1,t) ;}
					if (ID==p.ID)
					        {
						printf("Lancien prenom est: %s \n",p.prenom);
						printf("Saisir le nouveau Prenom \n");fflush(stdin);
						scanf("%s",p.prenom);
						fwrite(&p,sizeof(patient),1,t) ;}
				}
	printf("Le prenom du patient a été modifié\n");}
	fclose(f) ;
	fclose(t) ;
	f=fopen(fichier,"wb") ;
	t=fopen(tmp,"rb") ;
	while(fread (&p,sizeof(patient),1,t)!=0)
		{fwrite(&p,sizeof(patient),1,f) ;}
	fclose(f) ;
	fclose(t) ;
}

void modifier_age_pat( char fichier[])
{
char tmp[]="tmp.txt";
	FILE *f ;
	FILE *t ;
	patient p;
	int ID;
	printf("\n Donner l'ID du patient que vous voulez modifier:\n");
	scanf("%d", &ID);
	f=fopen(fichier,"rb") ;
	t=fopen(tmp,"wb") ;
	if (f!= NULL && t!=NULL)
		{
			while(fread(&p,sizeof(personnel),1,f)!=0)
				{
					if( ID!=p.ID)
						{fwrite(&p,sizeof(patient),1,t) ;}
					if (ID==p.ID)
					        {
						printf("Lancien age est: %d \n",p.age);
						printf("Saisir le nouveau Age \n");fflush(stdin);
						scanf("%d",&p.age);
						fwrite(&p,sizeof(patient),1,t) ;}
				}
	printf("L'age du patient a été modifié\n");}
	fclose(f) ;
	fclose(t) ;
	f=fopen(fichier,"wb") ;
	t=fopen(tmp,"rb") ;
	while(fread (&p,sizeof(patient),1,t)!=0)
		{fwrite(&p,sizeof(patient),1,f) ;}
	fclose(f) ;
	fclose(t) ;
}

void modifier_cin_pat( char fichier[],char tmp3[])
{
int c_cin=0;
int l=0;
char tmp[]="tmp.txt";
	FILE *f ;
	FILE *t ;
	FILE *y;
	patient p;
	int ID;
	printf("\n Donner l'ID du patient que vous voulez modifier:\n");
	scanf("%d", &ID);
	f=fopen(fichier,"rb") ;
	t=fopen(tmp,"wb") ;
	if (f!= NULL && t!=NULL)
		{
			while(fread(&p,sizeof(patient),1,f)!=0)
				{
					if( ID!=p.ID)
						{fwrite(&p,sizeof(patient),1,t) ;}
					if (ID==p.ID)
					        {
						do {
						printf("Lancienne CIN est: %ld \n",p.cin);
						printf("Saisir la nouvelle CIN \n");
						scanf("%ld",&p.cin);
						c_cin=comparer_cin_pat(&p);
						l=longueur_pat(p.cin);
						}
						while ((l!=8) || (p.cin <0) || (c_cin==1));
						fwrite(&p,sizeof(patient),1,t) ;}
				}
	printf("La CIN du patient a été modifiée\n");}
	fclose(f) ;
	fclose(t) ;
	f=fopen(fichier,"wb") ;
	t=fopen(tmp,"rb") ;
	while(fread (&p,sizeof(patient),1,t)!=0)
		{fwrite(&p,sizeof(patient),1,f) ;}
	fclose(f) ;
	fclose(t) ;
}

void modifier_sexe_pat( char fichier[])
{
char ch_sexe1[20]= "masculin";
char ch_sexe2[20]= "feminin";
char tmp[]="tmp.txt";
	FILE *f ;
	FILE *t ;
	patient p;
	int ID;
	printf("\n Donner l'ID du patient que vous voulez modifier:\n");
	scanf("%d", &ID);
	f=fopen(fichier,"rb") ;
	t=fopen(tmp,"wb") ;
	if (f!= NULL && t!=NULL)
		{
			while(fread(&p,sizeof(patient),1,f)!=0)
				{
					if( ID!=p.ID)
						{fwrite(&p,sizeof(patient),1,t) ;}
					if (ID==p.ID)
					        {
						do
							{
							printf("Lancien sexe est: %s \n",p.sexe);
							printf("Choisir le nouveau sexe: feminin/masculin \n");fflush(stdin);
							scanf("%s",p.sexe);} 
							while ((strcmp(p.sexe,ch_sexe1)!=0)&&(strcmp(p.sexe,ch_sexe2)!=0));
						fwrite(&p,sizeof(patient),1,t) ;}
				}
	printf("Le sexe du patient a été modifié\n");}
	fclose(f) ;
	fclose(t) ;
	f=fopen(fichier,"wb") ;
	t=fopen(tmp,"rb") ;
	while(fread (&p,sizeof(patient),1,t)!=0)
		{fwrite(&p,sizeof(patient),1,f) ;}
	fclose(f) ;
	fclose(t) ;
}

void modifier_num_tel_pat( char fichier[])
{
char tmp[]="tmp.txt";
	FILE *f ;
	FILE *t ;
	patient p;
	int ID;
	printf("\n Donner l'ID du patient que vous voulez modifier:\n");
	scanf("%d", &ID);
	f=fopen(fichier,"rb") ;
	t=fopen(tmp,"wb") ;
	if (f!= NULL && t!=NULL)
		{
			while(fread(&p,sizeof(patient),1,f)!=0)
				{
					if( ID!=p.ID)
						{fwrite(&p,sizeof(patient),1,t) ;}
					if (ID==p.ID)
					        {
						printf("Lancien numero de telephone est: %ld \n",p.numero_telephone);
						printf("Saisir le nouveau numero de téléphone \n");fflush(stdin);
						scanf("%ld",&p.numero_telephone);
						fwrite(&p,sizeof(patient),1,t) ;}
				}
	printf("Le numéro de téléphone du patient a été modifié\n");}
	fclose(f) ;
	fclose(t) ;
	f=fopen(fichier,"wb") ;
	t=fopen(tmp,"rb") ;
	while(fread (&p,sizeof(patient),1,t)!=0)
		{fwrite(&p,sizeof(patient),1,f) ;}
	fclose(f) ;
	fclose(t) ;
}

void modifier_adresse_pat( char fichier[])
{
char tmp[]="tmp.txt";
	FILE *f ;
	FILE *t ;
	patient p;
	int ID;
	printf("\n Donner l'ID du patient que vous voulez modifier:\n");
	scanf("%d", &ID);
	f=fopen(fichier,"rb") ;
	t=fopen(tmp,"wb") ;
	if (f!= NULL && t!=NULL)
		{
			while(fread(&p,sizeof(patient),1,f)!=0)
				{
					if( ID!=p.ID)
						{fwrite(&p,sizeof(patient),1,t) ;}
					if (ID==p.ID)
					        {
						printf("Lancienne adresse est: %s \n",p.adresse);
						printf("Saisir la nouvelle adresse \n");fflush(stdin);
						scanf("%s",p.adresse);
						fwrite(&p,sizeof(patient),1,t) ;}
				}
	printf("L'adresse du patient a été modifié\n");}
	fclose(f) ;
	fclose(t) ;
	f=fopen(fichier,"wb") ;
	t=fopen(tmp,"rb") ;
	while(fread (&p,sizeof(patient),1,t)!=0)
		{fwrite(&p,sizeof(patient),1,f) ;}
	fclose(f) ;
	fclose(t) ;
}


void modifier_num_chambre_pat( char fichier[])
{
char tmp[]="tmp.txt";
	FILE *f ;
	FILE *t ;
	patient p;
	int ID;
	printf("\n Donner l'ID du patient que vous voulez modifier:\n");
	scanf("%d", &ID);
	f=fopen(fichier,"rb") ;
	t=fopen(tmp,"wb") ;
	if (f!= NULL && t!=NULL)
		{
			while(fread(&p,sizeof(patient),1,f)!=0)
				{
					if( ID!=p.ID)
						{fwrite(&p,sizeof(patient),1,t) ;}
					if (ID==p.ID)
					        {do
						{
						printf("Lancien numero de chambre est: %s \n",p.num_chambre);
						printf("Saisir le nouveau numero de chambre  \n");fflush(stdin);
						scanf("%s",p.num_chambre);}
						while(p.num_chambre<0);
						fwrite(&p,sizeof(patient),1,t) ;}
				}
	printf("Le numero de chambre du patient a été modifié\n");}
	fclose(f) ;
	fclose(t) ;
	f=fopen(fichier,"wb") ;
	t=fopen(tmp,"rb") ;
	while(fread (&p,sizeof(patient),1,t)!=0)
		{fwrite(&p,sizeof(patient),1,f) ;}
	fclose(f) ;
	fclose(t) ;
}

void modifier_num_lit_pat( char fichier[])
{
char tmp[]="tmp.txt";
	FILE *f ;
	FILE *t ;
	patient p;
	int ID;
	printf("\n Donner l'ID du patient que vous voulez modifier:\n");
	scanf("%d", &ID);
	f=fopen(fichier,"rb") ;
	t=fopen(tmp,"wb") ;
	if (f!= NULL && t!=NULL)
		{
			while(fread(&p,sizeof(patient),1,f)!=0)
				{
					if( ID!=p.ID)
						{fwrite(&p,sizeof(patient),1,t) ;}
					if (ID==p.ID)
					        {do
						{
						printf("Lancien numero de lit est: %s \n",p.num_lit);
						printf("Saisir le nouveau numero de lit  \n");fflush(stdin);
						scanf("%s",p.num_lit);}
						while(p.num_lit<0);
						fwrite(&p,sizeof(patient),1,t) ;}
				}
	printf("Le numero de lit du patient a été modifié\n");}
	fclose(f) ;
	fclose(t) ;
	f=fopen(fichier,"wb") ;
	t=fopen(tmp,"rb") ;
	while(fread (&p,sizeof(patient),1,t)!=0)
		{fwrite(&p,sizeof(patient),1,f) ;}
	fclose(f) ;
	fclose(t) ;
}

void modifier_nom_parrain_pat( char fichier[])
{
char tmp[]="tmp.txt";
	FILE *f ;
	FILE *t ;
	patient p;
	int ID;
	printf("\n Donner l'ID du patient que vous voulez modifier:\n");
	scanf("%d", &ID);
	f=fopen(fichier,"rb") ;
	t=fopen(tmp,"wb") ;
	if (f!= NULL && t!=NULL)
		{
			while(fread(&p,sizeof(patient),1,f)!=0)
				{
					if( ID!=p.ID)
						{fwrite(&p,sizeof(patient),1,t) ;}
					if (ID==p.ID)
					        {
						printf("Lancien nom du parrain est: %s \n",p.nom_parrain);
						printf("Saisir le nom d'un parrain\n");fflush(stdin);
						scanf("%s",p.nom_parrain);
						fwrite(&p,sizeof(patient),1,t) ;}
				}
	printf("Le nom du parrain a été modifié\n");}
	fclose(f) ;
	fclose(t) ;
	f=fopen(fichier,"wb") ;
	t=fopen(tmp,"rb") ;
	while(fread (&p,sizeof(patient),1,t)!=0)
		{fwrite(&p,sizeof(patient),1,f) ;}
	fclose(f) ;
	fclose(t) ;
}

void modifier_num_parrain_pat( char fichier[])
{
char tmp[]="tmp.txt";
	FILE *f ;
	FILE *t ;
	patient p;
	int ID,l;
	printf("\n Donner l'ID du patient que vous voulez modifier:\n");
	scanf("%d", &ID);
	f=fopen(fichier,"rb") ;
	t=fopen(tmp,"wb") ;
	if (f!= NULL && t!=NULL)
		{
			while(fread(&p,sizeof(patient),1,f)!=0)
				{
					if( ID!=p.ID)
						{fwrite(&p,sizeof(patient),1,t) ;}
					if (ID==p.ID)
					        {
						do {
						printf("Lancien numero de telephone du parrain est: %ld \n",p.num_tel_parrain);
						printf("Saisir le nouveau numero de telephone du parrain \n");
						scanf("%ld",&p.num_tel_parrain);
						l=longueur_pat(p.num_tel_parrain); }
						while ((p.num_tel_parrain<0) || (l!=8));
						fwrite(&p,sizeof(patient),1,t) ;}
				}
	printf("Le numero de telephone du parrain a été modifié\n");}
	fclose(f) ;
	fclose(t) ;
	f=fopen(fichier,"wb") ;
	t=fopen(tmp,"rb") ;
	while(fread (&p,sizeof(patient),1,t)!=0)
		{fwrite(&p,sizeof(patient),1,f) ;}
	fclose(f) ;
	fclose(t) ;
}


void modifier_date_d_entree_pat( char fichier[])
{
char tmp[]="tmp.txt";
	FILE *f ;
	FILE *t ;
	patient p;
	int ID,l2,test_j_entree;
	printf("\n Donner l'ID du patient que vous voulez modifier:\n");
	scanf("%d", &ID);
	f=fopen(fichier,"rb") ;
	t=fopen(tmp,"wb") ;
	if (f!= NULL && t!=NULL)
		{
			while(fread(&p,sizeof(patient),1,f)!=0)
				{
					if( ID!=p.ID)
						{fwrite(&p,sizeof(patient),1,t) ;}
					if (ID==p.ID)
					        {
						do {
						printf("Lancienne date d'entree est: %d %d %d \n",p.date_entree.jour,p.date_entree.mois,p.date_entree.annee);
						printf("Donnez la nouvelle date d'entree: jour mois annee \n");
						scanf("%d %d %d",&(p.date_entree.jour),&(p.date_entree.mois),&(p.date_entree.annee));
						l2=longueur_pat(p.date_entree.annee);
						test_j_entree=test_jour_entree(&p);}
						while ((p.date_entree.jour<0)||(p.date_entree.mois<0)||
						(p.date_entree.mois>12)||(p.date_entree.annee<0)||(l2!=4)||(test_j_entree==1));
						fwrite(&p,sizeof(patient),1,t) ;}
				}
	printf("La date d'entrée du patient a été modifié\n");}
	fclose(f) ;
	fclose(t) ;
	f=fopen(fichier,"wb") ;
	t=fopen(tmp,"rb") ;
	while(fread (&p,sizeof(patient),1,t)!=0)
		{fwrite(&p,sizeof(patient),1,f) ;}
	fclose(f) ;
	fclose(t) ;
}


void modifier_date_de_sortie_pat( char fichier[])
{
char tmp[]="tmp.txt";
	FILE *f ;
	FILE *t ;
	patient p;
	int ID,l2,test_j_sortie,c;
	printf("\n Donner l'ID du patient que vous voulez modifier:\n");
	scanf("%d", &ID);
	f=fopen(fichier,"rb") ;
	t=fopen(tmp,"wb") ;
	if (f!= NULL && t!=NULL)
		{
			while(fread(&p,sizeof(patient),1,f)!=0)
				{
					if( ID!=p.ID)
						{fwrite(&p,sizeof(patient),1,t) ;}
					if (ID==p.ID)
					        {
						do {
						printf("Lancienne date de sortie est: %d %d %d \n",p.date_sortie.jour,p.date_sortie.mois,p.date_sortie.annee);
						printf("Donnez la nouvelle date de sortie: jour mois annee \n");
						scanf("%d %d %d",&(p.date_sortie.jour),&(p.date_sortie.mois),&(p.date_sortie.annee));
						l2=longueur_pat(p.date_sortie.annee);
						test_j_sortie=test_jour_sortie(&p);
						c=comparer_date(&p);}
						while ((p.date_sortie.jour<=0)||(p.date_sortie.mois<=0)||(p.date_sortie.mois>12)||(p.date_sortie.annee<=0)||(l2!=4)||(c==0)||(test_j_sortie==1));
}
				}
	printf("La date de sortie du patient a été modifié\n");}
	fclose(f) ;
	fclose(t) ;
	f=fopen(fichier,"wb") ;
	t=fopen(tmp,"rb") ;
	while(fread (&p,sizeof(patient),1,t)!=0)
		{fwrite(&p,sizeof(patient),1,f) ;}
	fclose(f) ;
	fclose(t) ;
}



void modifier_patient()
{
int choix;
char tmp3[]="tmp3.txt";
char fichier[]="fichier_patient";
do{
afficher_menu_modifier_pat();
choix=choix_menu_modifier_pat();

switch (choix) {
	case 1: modifier_ID_pat(fichier,tmp3);
	break;
	case 2: modifier_nom_pat(fichier);
	break;
	case 3: modifier_prenom_pat(fichier);
	break;
	case 4: modifier_age_pat(fichier);
	break;
	case 5: modifier_cin_pat(fichier,tmp3);
	break;
	case 6: modifier_sexe_pat(fichier);
	break;
	case 7: modifier_num_tel_pat(fichier);
	break;
	case 8: modifier_adresse_pat(fichier);
	break;
	case 9: modifier_num_chambre_pat(fichier);
	break;
	case 10: modifier_num_lit_pat(fichier);
	break;
	case 11: modifier_nom_parrain_pat(fichier);
	break;
	case 12: modifier_num_parrain_pat(fichier);
	break;
	case 13: modifier_date_d_entree_pat(fichier) ;
	break;
	case 14: modifier_date_de_sortie_pat(fichier) ;
	break;
	case 0: printf("Retour au menu gestion des patients")  ;
	break;break;
	default: printf("\n Mauvais Choix\n");
	}
}while (choix!=0);
}
